package cn.yilongquan.mapper;

import cn.yilongquan.user.query.MenuQuery;
import cn.yilongquan.user.domain.Menu;
import io.lettuce.core.dynamic.annotation.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 菜单数据访问接口
 */
@Repository
public interface MenuMapper {
    /**
     * 根据ID查询菜单
     */
    Menu findById(Long id);

    /**
     * 查询所有菜单
     */
    List<Menu> findAll();

    /**
     * 新增菜单
     */
    void add(Menu menu);

    /**
     * 更新菜单
     */
    void update(Menu menu);

    /**
     * 根据ID删除菜单
     */
    void deleteById(Long id);

    /**
     * 批量删除菜单
     */
    void batchDelete(List<Long> ids);

    /**
     * 分页查询菜单
     */
    List<Menu> pageList(MenuQuery menuQuery);

    /**
     * 查询所有父级菜单
     */
    List<Menu> findParentMenus();

    /**
     * 查询菜单树结构
     */
    List<Menu> findMenuTree();
    /**
     * 查询数据总条数
     */
    Long count(MenuQuery menuQuery);

    List<Menu> findByIds(@Param("pIds") List<Long> pIds);

    List<Menu> findByEmployeeId(Long id);
}
